'''
创建一个关键字驱动类，封装所有的常用关键字，作为工具类的存在
常规操作:
    1启动浏览器
    2URL的访问
    3元素定位
    4输入
    5点击
    6退出
    。。。。。。
'''

from selenium import webdriver
from selenium.webdriver.common.by import By

# 元素定位 总计8种方法
def locator(self,loc_type,loc):
    if loc_type =='name':
        self.driver.find_element_by_name(loc)
    elif loc_type == 'xpath':
        self.driver.find_element_by_xpath(loc)
    elif loc_type == 'id':
        self.driver.find_element_by_id(loc)
    else:
        print('元素定位错误')


class KeywordDemo:
    # 构造函数
    def __init__(self, browser_type):
        self.driver = self.open_browser_v1(browser_type)
        return
    # 元素定位 2.0 :基于by对象解析元组内容生成元素定位操作
    def locator(self,loc):
        return self.driver.find_element(*loc)

    # 元素定位 3.0 :基于str来生成元素定位
    def locator(self, name,value):
        return self.driver.find_element(name,value)

    # 元素的输入
    def input(self, name,value,txt):
        self.locator(name,value).send_keys(txt)
    # 元素的点击

    def click(self, name,value):
        self.locator(name, value).click()

    # 访问指定URL
    def visit(self, url):
        self.driver.get(url)
    # 关闭浏览器 ，释放资源
    def quit(self):
            self.driver.quit()

    # 创建driver对象1.0
    def open_browser_v1(self, browser_type):
        print('open web driver v1:' + browser_type)
        if browser_type == 'Chrome':
             self.driver = webdriver.Chrome()
        else:
            self.driver = webdriver.Firefox()
        print(self.driver)
        return self.driver

    # 创建driver对象2.0,基于Python反射机制来实现driver对象的创建
    def open_browser_v2(self,browser_type):
        print('open web driver v2:' + browser_type)
        driver = getattr(webdriver,browser_tyle)()
        print(driver)
        self.driver = driver
        return driver
